package strategy

// 设计思路（策略模式 + 多目标排序）
// ConstraintType 表示不同的路径计算约束类型
type ConstraintType int

const (
	MinHop            ConstraintType = iota //最小跳数
	MinDelay                                // 最小时延
	BalancedBandwidth                       // 带宽均衡
	MinCost                                 // 最小cost
	MustPass                                // 必须经过某些节点或边
	MustNotPass                             // 不得经过某些节点或边
)

type Strategy interface {
	GetType() ConstraintType
	Evaluate(current MultiObjectiveScore, link *LinkWithAttrs) MultiObjectiveScore
	Apply(arge ...interface{}) bool // 可变参数，用于不同策略的验证
}
